GtkWidget *progress;
gboolean initialized;
- gboolean is_preview;
+ gboolean is_preview;
+ gboolean done;
} PrintPagesData;
static void
data->num_ranges = num_of_correct_ranges;
}
-static gboolean
+static void
increment_page_sequence (PrintPagesData *data)
{
GtkPrintOperationPrivate *priv = data->op->priv;
data->uncollated++;
}
else
- return FALSE;
+ {
+ data->done = TRUE;
+ return;
+ }
}
else
{
priv->page_position >= priv->nr_of_pages_to_print ||
data->sheet < 0 ||
data->sheet >= data->num_of_sheets)
- return FALSE;
+ {
+ data->done = TRUE;
+ return;
+ }
else
data->page = data->pages[priv->page_position];
- return TRUE;
+ return;
}
else
data->collated = 0;
priv->page_position >= priv->nr_of_pages_to_print ||
data->sheet < 0 ||
data->sheet >= data->num_of_sheets)
- return FALSE;
+ {
+ data->done = TRUE;
+ return;
+ }
else
data->page = data->pages[priv->page_position];
data->total++;
-
- return TRUE;
}
static void
print_pages_idle (gpointer user_data)
{
PrintPagesData *data;
- GtkPrintOperationPrivate *priv;
+ GtkPrintOperationPrivate *priv;
gboolean done = FALSE;
data = (PrintPagesData*)user_data;
goto out;
}
- common_render_page (data->op, data->page);
-
- if (!increment_page_sequence (data))
- done = TRUE;
+ if (!data->done)
+ {
+ common_render_page (data->op, data->page);
+ increment_page_sequence (data);
+ }
+ else
+ done = priv->page_drawing_state == GTK_PAGE_DRAWING_STATE_READY;
out: